Model to model transformation is an integral process in the model-driven architecture (MDA), an approach to system design adopted by the Object Management Group (OMG). MDA promotes the use of models as development artifacts that can be transformed from the highest abstraction level to the lower abstraction level through a chain of well-defined model to model transformations.
The state of the art and practice contains several proposals for implementing model to model transformation, as discussed in these surveys:                K. Czarnecki and S. Helsen. Feature-based Survery of Model Transformation Approaches. IBM Systems Journal, vol. 45, number 3, pages 612-646, 2006;        T. Gardner, C. Griffin, J. Koehler, and R. Hauser. A Review of OMG MOF 2.0 Query/Views/Transformations Submissions and Recommendations toward the Final Standard. OMG Document ad/03-08-02; and        S. Sendall and W. Kozaczynski. Model Transformation: The Heart and Soul of Model-Driven Software Development. IEEE Software 20, No. 5, 42-45, 2003.        
One key feature of comparison is the transformation's ‘target incrementality’, which is the ability to update existing target models based on changes to source models. Typically a transformation maintains traceability links between the source and target elements and uses them to establish whether target model elements need updating. The transformation then applies the necessary changes to the impacted target model elements and at the same time preserves the ones that can be preserved.
Two kinds of incremental change strategies can be implemented. One kind uses the traceability links between the source and target model element that are defined as part of the transformation itself. For example, in MTF (IBM Model Transformation Framework 1.0.0: Programmer's Guide. 2004. at www.alphaworks.ibm.com/tech/mtf), traceability links are expressed as ‘identity conditions’ specified as part of every mapping rule. The condition asserts whether elements form the source and target corresponds to each other in the context of this rule. If a source element did not correspond to a target element, one is created new, otherwise a binding is formed and further consistency checking is done between the two elements to determine if changes to the target are needed.
The other kind of incremental change strategy initially ignores the old target models and proceeds to transform the source models into new target models. After that, the strategy uses compare and merge technologies to merge the new target models into the old target models assuming a matching strategy exist for the target domain that can relate elements from the old and new target models.
An example of a transformation using the second approach is the Java-2-UML transformation available in RSA 7.0, which uses the Fuse strategy to merge the harvested and existing UML target models. One concern in this approach is the lack of a mechanism to automatically preserve manual changes made to the target models. The used Fuse strategy detects deltas between the new and existing target models and applies them automatically if there were all safe ones (add deltas), but brings up a delta viewer UI (User Interface) in case deltas leading to data loss are detected (change and remove deltas), giving the user a chance to review and confirm them. This is inconvenient if the transform is run in batch mode, where popping up a UI is not an option, as it forces the fuse strategy to either apply all changes blindly (which could override manual changes) or fail. It is also error prone as the user may not know the scope of manual changes made to the target models and hence accidentally chose to override them. A better reapply strategy needs to be provided for model-generating transformations.